/**
  ******************************************************************************
  * @file    ts.h
  * @author  FZetc飞贼(方惠清) 
  * @version V1.0.2
  * @date    2024.8
  * @brief   获取触摸屏的x轴和y轴、按压的值；上下左右滑动算法
  *          
  ******************************************************************************
  * @attention
  *  注意：
  *     本文档只供学习使用，不得商用，违者必究
  *	 推广：
  *  	合作交流建议：FZetcSnitch@163.com
  *		网站建设推广：www.FZetc.com
  *  	微信公众号：  FZetc飞贼 
  *
  ******************************************************************************
  */
#ifndef __TS_H        // 定义以防止递归包含
#define __TS_H


// (1)、其它头文件
#include <stdio.h>
#include <sys/types.h>      // open函数
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>         // read函数、close函数
#include <errno.h>          // 全局错误码声明所在的头文件
#include <string.h>         // strerror函数          
#include <stdlib.h>         // bzero函数、free函数
#include <linux/input.h>    // 输入子模型系统

// (2)、宏定义(函数、变量、常量)
#define TS_DEVPATH "/dev/input/event0"    // 开发板ts触摸屏文件位置
#define BLACK_TS 1                        // 开发板的黑色和蓝色边沿，触摸屏标志选择
#define BLUE_TS  0


// (3)、自定义类型(结构体、联合体、枚举)			
typedef struct ts_msg
{
    struct input_event ts_buf;  // 输入子模型的结构体

    int fd;                     // 触摸屏的文件描述符
    unsigned int x;             // 触摸屏的x、y轴、按压值
    unsigned int y;
    unsigned int touch;         // 触摸屏的按压值（0：无触摸、1：触摸）
    int ret;                    // 读取触摸屏数据的返回值

    int slide_x1;               // 触摸屏的滑动x轴、和y轴的初值和末值
    int slide_x2;      
    int slide_y1;  
    int slide_y2; 

    int up_flag;                // 触摸屏上下左右滑动标志
    int down_flag;
    int left_flag;
    int right_flag;

}ts_msg, *ts_msg_p;

// (4)、函数声明
extern ts_msg_p TS_Init(const char *dev_pathname);
extern void TS_UnInit(ts_msg_p ts_p);
extern void TS_GetVal(ts_msg_p ts_p);

// (5)、全局变量(声明)

// (6)、static全局变量(定义)

// (7)、static全局函数(实现)


#endif




